The field of the present invention pertains to the processing of graphics commands within the graphics subsystem of a computer. More particularly, the present invention relates to an apparatus for dynamically adjusting the clock rate of the graphics subsystem in a digital computer to control the overall system heat and noise output.
Digital computers are being used today to perform a wide variety of tasks. Many different areas of business, industry, government, education, entertainment, and most recently, the home, are tapping into the enormous and rapidly growing list of applications developed for today""s increasingly powerful computer devices. Computers have also become a key technology for communicating ideas, data, and trends between and among business professionals.
The use of graphics computer systems for the graphical depiction of information, and other types of xe2x80x9cvisual computingxe2x80x9d which present data to the user visually, represent one of the more compelling applications of computer graphics. Graphics have also become a key technology for communicating ideas, data, and trends in most areas of commerce, science, and education. For example, real time user interaction with three dimensional (3D) models and pseudo-realistic images is now feasible on high-performance workstations. These workstations contain dedicated, special purpose graphics hardware. The progress of semiconductor fabrication technology has made it possible to do real time 3D animation, with color shaded images of complex objects, described by thousands, and often millions, of polygons, on powerful dedicated rendering subsystems. The most recent and most powerful workstations are capable of rendering completely life-like, realistically lighted, 3D objects and structures.
In a typical 3D computer generated object, the 3D object is typically described by bounding surfaces, possibly combined with topology and other attributes of the objects describing the data model. Surfaces are typically represented by graphics xe2x80x9cprimitivesxe2x80x9d such as triangles, polygons or polyhedra. These primitives define the shape of the object and simplify the process of rendering. Other object attributes, such as connectivity or topology can also ease the rendering process by describing how objects fit together. Primitives are typically shaded, Z-buffered, and textured onto an array of pixels, during the rendering process which yields a realistic 3D image.
In a typical graphics computer, most of the actual rendering computation is performed by a graphics subsystem included within the computer. The 3D object data models are xe2x80x9ctraversedxe2x80x9d by a software program (e.g., in response to user input to change viewing position) running on one or more processors in a processor subsystem within the graphics computer. The primitives describing the 3D object are processed by the processor subsystem and sent to the graphics subsystem for rendering. For example, a 3D polygonal model of an object is sent to the graphics subsystem as contiguous strips of polygons, sent to the graphics subsystem as a graphics data stream (e.g., a list of primitives, rendering commands, instructions, etc.). Using this information, the graphics subsystem performs all the computational processing required to realistically render the 3D object. The hardware of the graphics subsystem is specially tuned to perform such processing quickly and efficiently in comparison to the CPU (central processing unit) subsystem, however, it may utilize the CPU or CPU""s as part of the rendering process.
To facilitate fast and efficient graphics processing, typical graphics subsystems are deeply pipelined, including many different stages for processing graphics data and commands. The large number of stages are sequenced and linked such that at any given instant, several data items or commands are being processed. Each stage is optimized to perform specific task. When it completes its task, another graphics command or data item is ready for processing. A modern, deeply pipelined, graphics processing subsystem can run at clock speeds of 266 MHz or more, processing enormous amounts of data.
However, even these clock speeds are often not sufficient for the most demanding 3D applications currently being envisioned. Such applications require the traversal of very large data models and the generation, display, and interaction with highly complex 3D objects, often in real-time. A partial list of such applications include the generation of special effects for movies, real-time engineering design and simulations, weather prediction, high fidelity virtual reality, computational fluid dynamics, medical diagnostic imaging, etc. As graphics computer systems become more powerful, the applications in which they are used proliferate, prompting the need for yet more graphical computing power.
One of the methods used by designers to increase graphics software execution speed is to increase the graphics subsystem xe2x80x9cclock speed.xe2x80x9d Clock speed refers to the rate at which the graphics subsystem steps its way through the individual software instructions. With many graphics subsystem designs, one or more instructions are executed per clock cycle. Increasing the number of clock cycles per second directly increases the number of instructions executed per second. Modern graphics subsystem""s often are xe2x80x9cclockedxe2x80x9d in excess of 200 MHz and execute many millions of instructions (e.g., interpolations, transformations, etc.). Graphics applications which run on computer devices using such graphics subsystems perform much better. Thus, computer designers set the graphics subsystem clock frequency as fast as possible.
Graphics subsystem clock frequency, however, as with the CPU subsystem clock frequency, cannot be increased without limit. If a graphics subsystem is clocked at too high a rate, excessive power consumption occurs, leading to overheating of the components of the graphics subsystem. Over heating leads to computational errors, unpredictable graphics subsystem behavior, or even physical destruction of one or more of the components of the graphics subsystem. Thus, the primary limiting factor to higher clock speeds is the fact that the higher speeds also lead to higher power consumption, and the high power consumption leads to high heat levels. The problem is exacerbated as more and more graphics functions are being integrated into smaller and smaller semiconductor dies, often having many millions of transistors. The need to the efficiently dissipate increasingly large amounts of heat becomes even more acute.
Thus, increasing the graphics power of the computer systems by increasing the clock speed leads to increasing power dissipation problems. Typical prior art solutions involve the use of elaborate heat dissipation mechanisms. Such mechanisms include, for example, the mounting of large, dedicated heat sinks directly onto the graphics processing chips, the use of large enclosures to increase air circulation around the graphics components, the use of large combination heat sink/fans, or even in some cases, the use of elaborate and sophisticated liquid cooling systems.
The above methods each have associated disadvantages. For example, in the case of the incorporation of a combination heat sink/fan, the fan adds additional noise to the operation of the system. This noise may prove unacceptable to system users. The additional heat sink (being additional to the respective heat sinks coupled to the one or more microprocessors) also adds size constraints to the design of the system enclosure. In the case of sophisticated active cooling schemes (e.g., liquid cooling), the added complexity adversely impacts the reliability of the computer system and significantly adds to the system""s cost, as well as cost of placement and maintenance, etc.
Other types of prior art methods for handling power consumption and heat dissipation involve the xe2x80x9cselectivexe2x80x9d shut down of system components or subsystems. One such method involves placing an entire computer system into a xe2x80x9csleepxe2x80x9d mode. During extended periods of inactivity, the components of the a computer system are placed into a low power state. The system remains primed for a xe2x80x9cwake-upxe2x80x9d when, for example, the user initiates some new action, wherein the previously powered down components resume operation.
The prior art xe2x80x9csleep modexe2x80x9d solutions are less than ideal in that they require periods of non-use in order to operate. For example, they require non utilization on the part of the user prior to placing the components of the computer system into a low power state. They also prevent typical system activity in such states. Hence, the prior art sleep mode solutions are not functional when the computer system is actually being used.
Thus, what is required is a solution which is able to adjust the heat output of the graphics subsystem of a computer system without preventing normal operation and requiring periods of non-use. What is required is a solution that does not involve the use of complex external components for augmenting heat dissipation, which unnecessarily add cost and complexity to a computer system. The required solution should operate efficiently, allowing the graphics subsystem to function at maximum performance without increasing the risk of heat induced errors, or damage, as well as be able to reduce heat output while maintaining normal operation. Many graphics software applications typically demand very fast graphics subsystems in order to deliver their best overall performance for the user. What is further required is a method and system for controlling other adverse system output levels, such as unwanted RF emissions, noise, and the like. Thus, what is needed is a method and apparatus which runs software programs or portions of programs, at peak performance for the user, yet does not lead to generation of excessive heat when not desired or required. The present invention provides a novel solution to the above requirements.
The present invention provides a method and system capable of adjusting the heat output of the graphics subsystem of a computer without reducing system capabilities or requiring periods of non-use. The present invention provides a solution that does not involve the use of complex external components for augmenting heat dissipation, and does not unnecessarily add cost and complexity to a computer system. The system of the present invention operates efficiently, allowing the graphics subsystem to function over a range of performance to control heat generation, RF emissions, and/or noise generation from the system. Many graphics software applications typically demand very fast graphics subsystems in order to deliver their best overall performance for the user. To accommodate them, the method and system of the present invention runs graphics software programs, or some portions thereof, at peak performance for the user when heat and other associated system output levels (RF emissions, noise, etc.), yet also allows these levels to be controlled without removing the systems ability to perform graphics operations.
In one embodiment, the system of the present invention is implemented as a device for dynamic graphics subsystem clock adjustment within a computer system having a CPU and a dedicated graphics subsystem. The device is comprised of a clock pulse generator for generating a clock frequency. The clock frequency is coupled to the graphics subsystem and is used by the graphics subsystem to synchronize and pace its internal operations. The clock frequency generated by the generator is variable over a range. A controller is coupled to the clock pulse generator, for adjusting the clock frequency from the clock pulse generator over the range. A system interface is coupled to the controller to interface various inputs from the graphics subsystem and the computer system with the controller. Based upon the heat of the graphics subsystem or other associated output levels (RF emissions, noise, etc.), the controller adjusts the clock frequency over the range to control the heat and/or other associated output levels of the graphics subsystem.
The system interface is coupled to the graphics subsystem to allow the controller to determine a graphics processing load placed on the graphics subsystem. Other inputs are also coupled to the controller via the system interface. For example, a temperature sensor is coupled to the system interface to communicate the temperature of the graphics system. An RF sensor and a noise sensor are coupled to the system interface to allow the controller to determine the RF emmissions of the graphics sub system and/or the computer subsystem and the noise output of the computer system (e.g., from cooling fans or other cooling apparatus). The controller adjusts the clock frequency generated by the clock pulse generator such that the clock frequency decreases when the temperature or other associated output levels of the graphics subsystem increases to a certain level and the clock frequency increases when the temperature or other associated output levels of the graphics subsystem decreases to a certain level, dynamically adjusting the clock frequency in response to the heat generation, RF emissions, and/or noise output of the graphics subsystem.
The dynamic adjustment of the clock frequency in response to heat generation overcomes the over heating and excessive noise generation problems of high clock frequency graphics subsystems. Large, complex graphics intensive software applications, or specific graphics intensive sub-portions thereof, are run at maximum speed in order to deliver the best performance taking into consideration the users environment. However, the clock frequency is reduced when the impact on the users environment is unacceptable, without, however, precluding any of the graphics capability desired by the user. In so doing, the present invention adjusts the thermal output of the graphics subsystem without requiring periods of non-use, the use of complex external components for augmenting heat dissipation, or the like, allowing the graphics subsystem to function at maximum performance when needed, without increasing the risk of heat induced errors, or damage.